using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;

namespace goAlarmsCS
{
    public interface IAlarm
    {
        string Name { get; set; }
        string Group { get; set; }
        string PopupText { get; set; }
        bool Enabled { get; set; }
        bool Silenced { get; set; }
        bool //an active alarm is one that has been triggered but it might be snoozed. 
         Active { get; set; }
        bool //alarms has been snoozed
         Snoozed { get; set; }
        int //for recurring alarms time in minutes between triggers.
         Frequency { get; set; }
        int SnoozeDuration { get; set; }
        int //0 duration means no auto-snooze
         AutoSnoozeDuration { get; set; }
        byte //max number of time to allow auto-snooze
         AutoSnoozeMaxCount { get; set; }
        byte //numbe of times this alarm has been snoozed.
         SnoozedCurrentCount { get; set; }
        DateTime NextTriggerTime { get; set; }
        Func<CreateTriggerArgs, Object> CreateTriggerFunction { get; set; }
        event EventHandler Trigger;
        void TriggerHandler();
        void DoSnooze();
        void DoReset();
    }
}
